/*

This file is part of roomyak.

Copyright (C) 2008 Pixecur Technologies Incorporated (Esotera).
Visit Esotera at http://www.esoteras3.com
 
roomyak is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
 
roomyak is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with roomyak; see the file COPYING.  If not, write to 
Pixecur Technologies, 213-31 Peet Street, St. John's, NL, A1B 3W8. 
 
Linking this library statically or dynamically with other modules is
making a combined work based on this library.  Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
 
*/

package com.datasentinel.os;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;

public class ProcessIterator implements Iterator<String>
{
	private BufferedReader error;
	private BufferedReader input;
//	private BufferedWriter output;
	private Process process;
	public ProcessIterator(Process process)
	{
		this.process = process;
		input = new BufferedReader(new InputStreamReader(process.getInputStream()));
		error = new BufferedReader(new InputStreamReader(process.getErrorStream()));
		getNext();
	}
	String line;
	private String getNext()
	{
		try
		{
			line = input.readLine();
		}
		catch (IOException e)
		{
		}
		return line;
	}
	public boolean hasNext()
	{
		return line != null;
	}
	public String next()
	{
		String result = line;
		getNext();
		return result;
	}
	public void remove()
	{
	}	
	public int exitValue() throws InterruptedException 
	{
		return process.waitFor();
	}
	public void close() throws IOException
	{
		input.close();
		error.close();
	}
	
	public Process getProcess()
	{
		return process;
	}
}